/*
 * semaforo.h
 *
 *  Created on: Jul 23, 2014
 *      Author: diego GG
 */

#ifndef SEMAFORO_H_
#define SEMAFORO_H_

#include <vector>
#include <string>
#include "calle.h"

class Semaforo {
	private:
		std::vector<Calle *> * calles;
		std::string nombre;
		bool fueHabilitado;
	public:
		Semaforo(std::string nombre){
			this->nombre = nombre;
			fueHabilitado = false;			
			calles = new std::vector<Calle *> () ; 
		}

		void agregarCalle(std::string nombre,int capacidad){
			Calle * calle = new Calle (nombre,capacidad) ; 
			calles->push_back(calle);
		}

		bool getCalle(std::string nombre, Calle ** calle) const{
			for(int i = 0; i <= calles->size(); i++){
				Calle * _calle = calles->at(i);
				if(_calle->getNombre() == nombre){
					*calle = _calle;
					return true ;
				}else{
					return false;	
				}
			}
		}

  		void cambiarNombre( std::string& n) {
	       	nombre.append(n) ;
   	    }
	

		std::string getNombre() const{
			return this->nombre;
		}

		bool getEstado() const{
			return this->fueHabilitado;
		}

		void habilitar(){
			this->fueHabilitado = true;
		}

		void desHabilitar(){
			this->fueHabilitado = false;
		}
};




#endif /* SEMAFORO_H_ */
